#ifndef _IFFT_GPU_H_
#define _IFFT_GPU_H_
/**************************************************//*!
 *
 * \file    ifftgpu.h
 * \brief   FFT-GPU internal header file
 *
 * \author  Terence Wu
 * \date    Sep. 2009
 *
 ****************************************************/

#include "commondef.h"
#include "fftgpu.h"

#include "Plan.h"
#include "Problem.h"
#include "Solver.h"

#include "../dft_solver/dft_plans.h"
#include "../dft_solver/dft_solvers.h"

// Codelet:

typedef struct CodeletInfo
{
    int n;
} CodeletInfo;

// Planner:

typedef enum Wakefulness
{
    SLEEPY = 0,
    AWAKE_SQRTN_TABLE = 1,
    AWAKE_TWIDDLE = 2,
    AWAKE_PROGRAM = 4,
} Wakefulness;


typedef struct Static
{
    int nprob;
    int nchoice;
    Static() :nprob(0), nchoice(0) {}
} Static;

FFTGPU_EXPORT Plan * make_plan(Problem * prob);
FFTGPU_EXPORT void destroy_plan(Plan * p);
FFTGPU_EXPORT Static & get_static();

#endif //_IFFT_GPU_H_